﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SistemaGO_Library.Entidades.Usuario
{
    class CadastroUsuario
    {
        private IRepositorioUsuario usuarios;

        public CadastroUsuario(IRepositorioUsuario repUsu){
            this.usuarios = repUsu;
        }

        public void inserirUsuario(Usuario usu) {
            if (usu != null && !usuarios.existeUsuario(usu.Usu_login)) {
                usuarios.inserirUsuario(usu);
            } else {
                throw new Exception("Usuário Já Existente ou Nulo");
            }
        }

        public Usuario buscarUsuario(string login) {
            Usuario usu = new Usuario();
            usu = null;
            if (usuarios.existeUsuario(login)) {
                usu = usuarios.buscarUsuario(login);
            } else {
                throw new Exception("Usuário Não Encontrado");
            }
            return usu;
        }

        public void alterarUsuario(string login, Usuario novoUsuario) {
            if (usuarios.existeUsuario(login)) {
                usuarios.alterarUsuario(login, novoUsuario);
            } else {
                throw new Exception("Erro ao alterar usuário");
            }
        }

        public void excluirUsuario(string login) {
            if (login == null || login == "") {
                throw new Exception("Erro ao excluir usuário");
            } else {
                usuarios.excluirUsuario(login);
            }
        }

        public Usuario logarUsuario(string login, string senha){
            Usuario usu = null;
            usu = usuarios.logarUsuario(login, senha);
            return usu;
        }

        public int registrarLogonUsuario(Usuario usu, DateTime data)
        {
            if (usu == null || data == null) {
                throw new Exception("Erro ao registar o logon");
            } else {
                return usuarios.registrarLogonUsuario(usu, data);
            }
        }

        public void registrarLogoffUsuario(DateTime data, int cod)
        {
            if (cod == 0 || data == null) {
                throw new Exception("Erro ao registar o logoff");
            } else {
                usuarios.registrarLogoffUsuario(data, cod);
            }
        }
    }
}
